#! /usr/bin/bash

script_path='./debug.sh'
test -f "$script_path" && source "${script_path}" # 被 source的脚本追加到BASH_SOURCE 堆栈中, 当这一行脚本执行完成后，从堆栈中弹出

# test -f "$script_path" && "./${script_path}"
echo "BASH_SOURCE: [0] ${BASH_SOURCE}, [1] ${BASH_SOURCE[1]}, [2] ${BASH_SOURCE[2]}" # BASH_SOURCE中的debug.sh 已经被弹出，即使后面还会使用debug.sh中的函数，也不会有debug.sh 存在于BASH_SOURCE堆栈中
debug

function print_func_name(){
	echo "FUNCNAME: $FUNCNAME"
}
#  Bash 的命令替换"$(cmd)" 开启的是当前 Shell 的子 Shell，而在子 Shell 里切换工作目录，并不会影响当前 Shell。
# my_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "dirname: $(dirname $(readlink -f $0))"
# 当前执行shell中的 source file stack like function stack
# BASH_SOURCE store sourced files
# 当前shell中的子shell中的sourced file不会统计到当前shell的source 堆栈中
# 此处堆栈中只剩下当前脚本
echo "BASH_SOURCE: [0] ${BASH_SOURCE}, [1] ${BASH_SOURCE[1]}, [2] ${BASH_SOURCE[2]}"
